let baseURL = 'http://cx.iirl.top';

// 不需要 token 的接口白名单
const noAuthUrls = ['/api/login'];

const Request = (options) => {
	return new Promise((resolve, reject) => {
		// 获取 token
		let token = uni.getStorageSync("token") || '';
		// 如果当前请求不在白名单且没有 token，跳转到登录页面
		if (!noAuthUrls.includes(options.url) && !token) {
			uni.showToast({
				title: '请先登录！',
				icon: 'none'
			});
			setTimeout(() => {
				uni.reLaunch({
					url: '/pages/login/index' // 跳转到登录页面
				});
			}, 1000);
			return reject(new Error('用户未登录')); // 终止请求并返回错误
		}

		// 统一的错误提示封装
		const showErrorToast = (msg) => {
			uni.showToast({
				title: msg || '请求失败',
				icon: 'none'
			});
		};

		// 发起网络请求
		uni.request({
			url: baseURL + options.url, // 构建完整的请求 URL
			method: options.method || 'GET', // 默认为 GET 方法
			data: options.data || {},
			header: {
				Authorization: token,
			},
			timeout: options.timeout || 10000, // 增加超时设置，默认 10 秒
			success: (res) => {
				const {
					statusCode,
					data
				} = res;
				if (statusCode >= 200 && statusCode < 300) {
					if(res.data.code == 111){
						uni.showToast({
							title:res.data.msg,
							icon:'none'
						})
					}
					// 请求成功
					if (options.ismsg) {
						uni.showToast({
							title: data.msg || '操作成功',
							icon: 'none'
						});
					}
					resolve(data); // 返回成功数据
				} else {
					
					// 处理 HTTP 错误代码
					showErrorToast(data.msg || `HTTP 错误: ${statusCode}`);
					console.error(`HTTP 错误: ${statusCode}`, data); // 输出详细的错误信息
					reject(new Error(`HTTP 错误: ${statusCode}`));
				}
			},
			fail: (err) => {
				// 网络错误或其他问题
				showErrorToast('网络错误');
				console.error('网络错误', err); // 输出详细的错误信息
				reject(err);
			},
		});
	});
};

export default Request;